#ifndef __USER_H__
#define __USER_H__


// 前向声明 ListNode
typedef struct ListNode ListNode;

// 用户结构体定义
typedef struct {
    int user_id;           // 用户ID
    char username[50];     // 用户名
    char password[50];     // 密码
    int user_type;         // 用户类型：-1=退出封号, 0=普通会员, 2=VIP, 2=SVIP, 3=管理员
    double balance;        // 账户余额
    double points;         // 用户积分
    char contact[100];     // 联系方式（电话或邮箱）
    double coupon_amount;  // 优惠券总金额
} User;

// 全局用户链表
extern ListNode *user_list;

// 函数声明
void init_user_system();  // 初始化用户系统（加载用户数据到链表）
void save_all_users();    // 保存所有用户到文件
/////
// 从文件加载所有用户到链表
void load_all_users();
// 保存所有用户到文件
void save_all_users_to_file();


User* user_register();                              // 用户注册
int user_login();                                   // 用户登录
void show_user_info(User *user);                    // 显示用户信息
int change_user_type(int user_id, int new_type);    // 修改用户类型
int recharge_balance(int user_id, double amount);   // 余额充值
int add_coupons(int user_id, double amount);        // 添加优惠券
int change_password(int user_id, char *new_password); // 修改密码
int reset_password(char *username, char *contact);  // 忘记密码（通过联系方式）
User* find_user_by_id(int user_id);                 // 查询用户（按ID）
User* find_user_by_name(char *username);            // 查询用户（按用户名）
int delete_user(int user_id);                       // 删除用户

// ID管理函数声明
// void save_max_user_id();                            // 保存最大ID到文件
// void load_max_user_id();                            // 从文件加载最大ID

int generate_user_id();                             // 生成唯一用户ID

//管理用户名

int is_username_exists(char *username);             // 用户名重复检查函数


#endif // __USER_H__
